var DOCALCFIRST = 0;
var DOCALCGROSS = 1;
var DOCALCPROGRESS = 2;
var DOCALBASE = 3;
var DOCALAMOUNT = 4;
var DOCALCALLSXF = 5;
var DOCALCALLTRF = 6;
var DOCALCALLFEE = 7;
var DONOTCALC = 8;

function calcGross(A) {
	var grossGPrice = A.getAt(0).data["grossGPrice"];
	var grossUpdate = A.getAt(0).data["grossUpdate"];
	var grossWeight = A.getAt(0).data["grossWeight"];
	A.getAt(0).data["grossPrice"] = tofloat(grossWeight * grossUpdate
			* grossGPrice);
	A.fireEvent("update", A, A.getAt(0), this.DOCALCGROSS);
}

function calcBaseFee(A) {
	var grossPrice = A.getAt(0).data["grossPrice"];
	var mtrlProcsPrice = A.getAt(0).data["mtrlProcsPrice"];
	var congCiFee = A.getAt(0).data["congCiFee"];
	var packFee = A.getAt(0).data["packFee"];
	var otherFee = A.getAt(0).data["otherFee"];
	/* 先计算基本价格 */
	A.getAt(0).data["baseCost"] = tofloat(grossPrice + mtrlProcsPrice
			+ congCiFee + packFee + otherFee);
	A.fireEvent("update", A, A.getAt(0), this.DOCALBASE);

}
function calcAmount(A) {
	var totalUpdate = A.getAt(0).data["totalUpdate"];
	var base = A.getAt(0).data["baseCost"];
	/* 计算产品价 */
	A.getAt(0).data["amount"] = tofloat(base * (1 + totalUpdate));
	A.fireEvent("update", A, A.getAt(0), this.DOCALAMOUNT);

}
function calcAllFee(A) {
	var sxf = A.getAt(0).data["sanXiangFee"];
	var trf = A.getAt(0).data["taxFee"];
	var amount = A.getAt(0).data["amount"];

	A.getAt(0).data["mtrlProcs"] = tofloat(amount + sxf + trf);
	A.fireEvent("update", A, A.getAt(0), this.DOCALCALLFEE);
}

function calcSXFee(A) {
	var sxr = A.getAt(0).data["sanXiangRate"] ;
	if(sxr>1)
		sxr/= 100;
	
	var base = A.getAt(0).data["amount"];
	A.getAt(0).data["sanXiangFee"] = tofloat(sxr * base);

	A.fireEvent("update", A, A.getAt(0), this.DOCALCALLSXF);

}
function calcTRFee(A) {
	var sxr = A.getAt(0).data["taxRate"];
	if(sxr>1)
	sxr/= 100;
	var base = A.getAt(0).data["amount"];
	A.getAt(0).data["taxFee"] = tofloat(sxr * base);

	A.fireEvent("update", A, A.getAt(0), this.DOCALCALLTRF);
}
function tofloat(f, dec) {
	if (isNaN(f))
		return 0;
	if (!dec)
		dec = 5;

	if (dec < 0)
		return "Error:dec<0!";
	var temp = 1;
	for (var i = 0; i < dec; i++)
		temp *= 10;
	f *= temp;
	f = Math.round(f);
	// alert(f/temp);
	return f / temp;
}

function calcAllUntilPrice(A, B) {

	var before = A.getAt(0).data["grossPrice"];

	for (var i = 0; i < B.getCount(); i++) {
		// alert(before);
		var p=B.getAt(i).data["pecent1"];
		if(p>1)
			p/=100;
		if (B.getAt(i).data["type"] == '芯子') {
			B.getAt(i).data["processCost"] = (before - B.getAt(i).data["jiage"])
					/ p;
		} else {
			B.getAt(i).data["processCost"] = ((before / B.getAt(i).data["perqty"]) + B
					.getAt(i).data["jiage"])
					/ p;
		}
		B.getAt(i).data["processCost"] = tofloat(B.getAt(i).data["processCost"]);
		before = B.getAt(i).data["processCost"];

	}
}
function loadRecord(A, B) {

	if (A) {
		A.getForm().loadRecord(B);
	}
}

function getProcessDetailForm() {
	if (!processDetailForm) {
		processDetailForm = new Ext.FormPanel({
					labelWidth : 75,
					id : "processDetaiForm",
					url : 'orderInput.do?action=jump',
					frame : true,
					bodyStyle : 'padding:5px 5px 0',
					width : 340,
					defaults : {
						width : 230
					},
					// ddGroup : 'gridDDGroup',
					// region : 'center',{
					defaultType : 'textfield',
					items : [{
								fieldLabel : '编号',// 一开始漏了个主id,导致update不成功
								name : 'transnum',
								readOnly : true,
								allowBlank : false
							}, {
								fieldLabel : '加工名称',// 一开始漏了个主id,导致update不成功
								name : 'type',

								// readOnly : true,
								allowBlank : false
							}, {
								fieldLabel : '加工步骤',// 一开始漏了个主id,导致update不成功
								name : 'linenum',
								readOnly : true,
								allowBlank : false
							}, {
								fieldLabel : '加工后规格',// 一开始漏了个主id,导致update不成功
								name : 'spec',
								listeners : {
									"change" : function(_this, _new, _old) {
										var P = processDetailForm.find("name",
												"linenum")[0].getValue();
										var func = new AreaFunc(schemeStore
												.getAt(P - 1).data["areaFunc"]);
										var R = func.doAction(_new);
										processDetailForm
												.find("name", "mianji")[0]
												.setValue(R);
										func = null;
									}
								},
								allowBlank : false
							}, {
								fieldLabel : '加工数量',// 一开始漏了个主id,导致update不成功
								name : 'perqty',
								allowBlank : false
							}, {
								fieldLabel : '加工面积',// 一开始漏了个主id,导致update不成功
								name : 'mianji',
								allowBlank : false
							}, {
								fieldLabel : '加工单价',// 一开始漏了个主id,导致update不成功
								name : 'danjia',
								allowBlank : false
							}, {
								fieldLabel : '加工提升',// 一开始漏了个主id,导致update不成功
								name : 'tisheng',
								allowBlank : false
							}, {
								fieldLabel : '加工成品率',// 一开始漏了个主id,导致update不成功
								name : 'pecent1',
								allowBlank : false
							}, {
								fieldLabel : '加工费用',// 一开始漏了个主id,导致update不成功
								name : 'processCost'
								// readOnly : true,
							// allowBlank : false
						}	, {
								fieldLabel : '到目前为止费用',// 一开始漏了个主id,导致update不成功
								name : 'untilPrice'
								// readOnly : true,
							// allowBlank : false
						}]
				});
	}
	return processDetailForm;
}// 构造了一个更新的界面。

function getProcessDetailWin() {
	if (!processDetailWin) {
		processDetailWin = new Ext.Window({
					layout : 'column',
					width : 355,
					autoHeight : true, // 4601782
					closeAction : 'hide',
					plain : true,
					items : processDetailForm,
					modal : false,// 如果这个属性不设，弹出窗口会增加20M内存使用。
					buttons : [{
						text : '保存',
						handler : function() {
							if (form.getForm().isValid()) {
								// Ext.msg.alert("starting to submit");
								processDetailWin.hide();
								// alert(processDetailSm.getSelections().length);
								var _rec = detailGridStore.getAt(LINENUM - 1);

								_rec.data["spec"] = processDetailForm.find(
										"name", "spec")[0].getValue();
								_rec.data["mianji"] = processDetailForm.find(
										"name", "mianji")[0].getValue();
								_rec.data["type"] = processDetailForm.find(
										"name", "type")[0].getValue();
								_rec.data["perqty"] = processDetailForm.find(
										"name", "perqty")[0].getValue();
								_rec.data["linenum"] = processDetailForm.find(
										"name", "linenum")[0].getValue();
								// _rec.data["processPrice"]=updateForm.find("name","processPrice")[0].getValue();
								_rec.data["tisheng"] = processDetailForm.find(
										"name", "tisheng")[0].getValue();
								_rec.data["pecent1"] = processDetailForm.find(
										"name", "pecent1")[0].getValue();
								_rec.data["danjia"] = processDetailForm.find(
										"name", "danjia")[0].getValue();

								detailGridStore.fireEvent("update", this, _rec,
										_rec);
								// processGrid.getView().refresh();

							} else {
								Ext.MessageBox.alert('提示', '请正确填写数据！');
							}
						}
					}, {
						text : '清空',
						handler : function() {
							processDetailForm.getForm().reset();
						}
					}, {
						text : '关闭',
						handler : function() {
							processDetailForm.getForm().reset();
							processDetailWin.hide();
						}
					}]
				});

		processDetailWin.on("hide", function(_this) {
					// processGrid.getSelectionModel().clearSelections();

				});
	}
	return processDetailWin;
}

function initDetailWin() {
	if (!detailWin) {
		detailWin = new Ext.Window({

			layout : 'column',
			width : 400,
			// height : 600,
			autoHeight : true, // 4601782
			closeAction : 'hide',
			plain : true,
			items : detailForm,
			modal : false,// 如果这个属性不设，弹出窗口会增加20M内存使用。
			// autoScoll : true,

			buttons : [{
				text : '保存',
				handler : function() {

					Ext.MessageBox.confirm("提示:", "是否需要把所有的数据都保存，被删除的数据不能恢复了?",
							function(button) {
								if (button == "yes") {

									processGrid.stopEditing();

									for (var i = 0; i < detailGridStore
											.getCount(); i++) {
										var pd = {
											transnum : detailGridStore.getAt(i).data["transnum"],
											linenum : detailGridStore.getAt(i).data["linenum"],
											type : detailGridStore.getAt(i).data["type"],
											spec : detailGridStore.getAt(i).data["spec"],
											perqty : detailGridStore.getAt(i).data["perqty"],
											mianji : detailGridStore.getAt(i).data["mianji"],
											danjia : detailGridStore.getAt(i).data["danjia"],
											tisheng : detailGridStore.getAt(i).data["tisheng"],
											jiage : detailGridStore.getAt(i).data["jiage"],
											pecent1 : detailGridStore.getAt(i).data["pecent1"]
										};

										DetailPrice.saveProcess(pd, function(
												ret) {
											if (ret) {
												;
											} else {
												Ext.MessageBox
														.alert(
																"提示",
																"第"
																		+ i
																		+ "条记录 save fail:"
																		+ ret);
											}
											return true;
										});
									}

									DetailPrice.removeOtherProcess(TRANSNUM,
											detailGridStore.getCount(),
											function(_ret) {
											});

									processGrid.startEditing(0, 0);

									/* 对总的结算纪录进行保存 */

									if (detailForm.getForm().isValid()) {
										// Ext.msg.alert("starting to submit");
										detailForm.getForm().submit({
											failure : function(retForm,
													retAction) {
												Ext.MessageBox.alert('提示',
														'保存数据失败！');
											},
											success : function(retForm,
													retAction) {
												detailWin.hide();
												// processGrid.destroy();
												ds.reload();
											},
											waitMsg : '正在保存数据，请稍后...'
										});

									} else {
										Ext.MessageBox.alert('提示', '请正确填写数据！');
									}
								}
							})

				}
					// initData();

			}, {
				text : '添加一行',
				// @todo...,count 是即时的数据量.
				handler : function() {
					var arr = detailSm.getSelections();
					var pd = new process({
								transnum : "",
								linenum : "",
								type : "",
								spec : "",
								perqty : "",
								mianji : "",
								danjia : "",
								tisheng : "",
								jiage : "",
								pecent1 : ""
							});
					processGrid.stopEditing();
					detailGridStore.insert(detailGridStore.getCount(), pd);
					processGrid.startEditing(0, 0);
				}
			}, {
				text : '删除多余行',
				// @todo...
				handler : function() {
					var sm = processGrid.getSelectionModel();
					if (sm.getCount() > 0) {
						Ext.MessageBox.confirm("提示:", "是否需要删除这"
										+ detailSm.getCount() + "个数据?",
								function(button) {
									if (button == "yes") {

										processGrid.stopEditing();

										var arr = sm.getSelections();
										// Ext.Msg.alert(arr.length);
										// alert(arr.length);
										for (var i = 0; i < arr.length; i++) {
											var pd = new process({
												transnum : arr[i].data["transnum"],
												linenum : arr[i].data["linenum"],
												type : arr[i].data["type"],
												spec : arr[i].data["spec"],
												perqty : arr[i].data["perqty"],
												mianji : arr[i].data["mianji"],
												danjia : arr[i].data["danjia"],
												tisheng : arr[i].data["tisheng"],
												jiage : arr[i].data["jiage"],
												pecent1 : arr[i].data["pecent1"]
											});
											oberser = pd;
											// alert(pd.data["transnum"]);
											// detailGridStore.remove(pd);
											// deleteCache.push();
											detailGridStore
													.remove(detailGridStore
															.getAt(pd.data["linenum"]
																	- 1));
											// alert("sucess");
										}

										processGrid.startEditing(0, 0);
										processGrid.getView().refresh();
									}
								});

					}
				}
			}, {
				text : '修改',
				tooltip : '修改一条结算信息',
				iconCls : 'option',
				onClick : function() {
					var sm = processGrid.getSelectionModel();
					if (sm.getCount() == 1) {
						processDetailSm = sm;
						LINENUM = sm.getSelections()[0].data["linenum"];
						form = getProcessDetailForm();
						processDetailWin = getProcessDetailWin();
						// processDetailForm.show();
						// updateForm.hide();
						var items = new Ext.util.MixedCollection();
						items.add("form", form);
						processDetailWin.width = 355, processDetailWin.items = items;

						processDetailWin.show();
						initDD(form, processDetailSm);
						form.getForm().reset();
						form.getForm().loadRecord(sm.getSelected());

					} else {
						Ext.MessageBox.alert('提示', '请选择一条记录！');
					}
				}
			}, {
				text : '关闭',
				handler : function() {

					detailWin.hide();

				}
			}]
		});
	}
	return detailWin;
}

function getDetailForm() {
	if (!processGrid)
		processGrid = initProcessGrid();
	if (!detailForm)
		detailForm = new Ext.FormPanel({
			url : '../DetailPrice.do?action=updateForm',
			labelAlign : 'left',
			title : '详细信息',
			buttonAlign : 'right',
			bodyStyle : 'padding:5px;',
			width : 600,
			height : 600,
			frame : true,// 设置了面板的边角是圆弧过度的，底色
			// labelWidth : 80,

			// autoScoll : true,
			items : [{
						layout : 'column',// 在formpanel的itmes加入一个column的定义
						border : false,
						labelSeparator : ':',
						items : [{
									columnWidth : .450,
									layout : 'form',
									border : false,
									items : [{
												xtype : 'textfield',
												fieldLabel : '序列号',
												// readOnly : true,
												name : 'transnum',
												allowBlank : false,
												anchor : '90%'
											}]
								}, {
									columnWidth : .450,
									layout : 'form',
									border : false,
									items : [{
												xtype : 'textfield',
												fieldLabel : '技术规格',
												readOnly : true,
												// readOnly : true,
												name : 'kaiMoSpec',
												allowBlank : false,
												anchor : '90%'
											}]
								}]
					}, {
						layout : 'column',// 在formpanel的itmes加入一个column的定义
						border : false,
						labelSeparator : ':',
						items : [{
							columnWidth : .650,
							layout : 'form',
							border : false,
							items : [{
								xtype : 'textfield',
								fieldLabel : '领料规格',
								allowBlank : false,
								regex : /\((\d\*)*\d\)$/,
								regexText : '不符合规范，请重新书写',
								// readOnly : true,
								// value : _cus.attn,
								listeners : {
									"change" : function(_this, _new, _old) {
										Ext.Msg.confirm("提示：", "是否需要重新计算材料费",
												function(button) {
													if (button == 'yes') {
														/**
														 * @todo 需要更新毛重，
														 */
														
														detailFormStore.getAt(0).data["getSpec"]=_new;			
														CostEstimate
																.calcGrossWeight(
																		_new
																				.split("(")[0],
																		detailForm
																				.find(
																						"name",
																						"ssign")[0]
																				.getValue(),
																		function(
																				ret) {
																			if (ret) {
																				var comp = detailForm
																						.find(
																								"name",
																								"grossWeight")[0];
																				
																				/*comp
																						.setValue(ret);*/
																				comp
																						.fireEvent(
																								"change",
																								comp,
																								tofloat(ret));
																			} else
																				Ext.Msg
																						.alert(
																								"错误",
																								"无法计算毛重，可能是对应密度为0，或者规格未能正常解读，请联系管理员解决");
																		})
													}
												});

									}
								},
								name : "getSpec",
								anchor : '90%'
							}]
						}]

					}, {
						layout : 'column',// 在formpanel的itmes加入一个column的定义
						border : false,
						labelSeparator : ':',
						items : [{
									columnWidth : .450,
									layout : 'form',
									border : false,
									items : [{
												xtype : 'textfield',
												fieldLabel : '镀层',
												allowBlank : false,
												readOnly : true,
												// value : _cus.attn,
												name : "plate",
												anchor : '90%'
											}]
								}, {
									columnWidth : .450,
									layout : 'form',
									border : false,
									items : [{
										xtype : 'textfield',
										fieldLabel : '牌号',
										listeners : {
											'change' : function(_this, _new,
													_old) {
												/**
												 * @todo 密度需要变化，毛坯单价需要变化
												 */
												detailFormStore.getAt(0).data["ssign"] = _new;
												density.getDensity(_new,
														function(ret) {
															if (ret == 0) {

																Ext.Msg
																		.alert(
																				"错误",
																				"没能找到对应的密度，请联系管理员设置");
															} else {
																var comp = detailForm
																		.find(
																				"name",
																				"density")[0];
																comp
																		.setValue(ret);
																comp
																		.fireEvent(
																				"change",
																				comp,
																				ret);
															}
														});
												maopidanjia.getMaoPi(_new,
														function(_ret) {
															var arr = _ret;
															// maopiStore.loadData(arr);
															for (var i = 0; i < arr.length; i++) {

																maopiStore
																		.add(new maopiRecord(
																				{
																					price : arr[i]
																				}));
															}
														})
											}
										},
										name : 'ssign',
										allowBlank : false,
										readOnly : true,
										anchor : '90%'
									}]
								}]

					}, {
						layout : 'column',
						border : false,
						labelSeparator : ':',
						items : [{
									columnWidth : .450,
									layout : 'form',
									border : false,
									items : [{
												xtype : 'textfield',
												fieldLabel : '技术状态',

												name : "techfd",
												anchor : '90%'
											}]
								}]
					}, {
						layout : 'column',// 在formpanel的itmes加入一个column的定义
						border : false,
						labelSeparator : ':',
						items : [{
							columnWidth : .450,
							layout : 'form',
							border : false,
							items : [{
								xtype : 'numberfield',
								fieldLabel : '净重',
								allowBlank : false,
								decimalPrecision : 6,
								listeners : {
									"change" : function(_this, _new, _old) {
										/**
										 * @todo 需要修改包装费，然后修改ds
										 */
										var unitPrice = 0;
										detailFormStore.getAt(0).data["netWeight"] = _new;
										otherConstants.getOtherConstants(
												"包装单价", "", function(ret) {
													unitPrice = ret;
													// detailFormStore.getAt(0).data["packFee"]=tofloat(unitPrice*detailFormStore.getAt(0).data["netWeight"]);
													var comp = detailForm.find(
															"name", "packFee")[0];
													comp
															.setValue(tofloat(unitPrice
																	* detailFormStore
																			.getAt(0).data["netWeight"]));
													comp
															.fireEvent(
																	"change",
																	comp,
																	comp
																			.getValue());
												})
									}

								},
								name : "netWeight",
								anchor : '90%'
							}]

						}, {
							columnWidth : .450,
							layout : 'form',
							border : false,
							items : [{
								xtype : 'numberfield',
								fieldLabel : '毛重',
								decimalPrecision : 6,
								name : 'grossWeight',
								allowBlank : false,
								listeners : {
									"change" : function(_this, _new, _old) {
										/**
										 * @todo 修改材料费，然后更新ds，从毛重开始用store进行计算。
										 */
										/*
										 * var
										 * unitPrice=detailForm.find("name","grossGPrice")[0].getValue();
										 * var comp=detailForm.find("name","");
										 */
										detailFormStore.getAt(0).data["grossWeight"] = _new;
										calcGross(detailFormStore);

									}
								},
								anchor : '90%'
							}]
						}]

					}, {
						layout : 'column',// 在formpanel的itmes加入一个column的定义
						border : false,
						labelSeparator : ':',
						items : [{
							columnWidth : .450,
							layout : 'form',
							border : false,
							items : [{
								xtype : 'combo',
								fieldLabel : '毛坯单价',

								name : "grossGPrice",

								store : maopiStore,
								displayField : 'price',
								decimalPrecision : 6,
								triggerAction : 'all',
								mode : 'local',

								listeners : {
									"select" : function(_this, _rec, _index) {
										/**
										 * @todo 变化类似。
										 */
										detailFormStore.getAt(0).data["grossGPrice"] = _rec.data["price"];
										calcGross(detailFormStore);

									},
									"change" : function(_this, _new, _old) {
										/**
										 * @todo 毛坯单价的变化，材料费变化，然后更新ds.
										 */
										detailFormStore.getAt(0).data["grossGPrice"] = _new;
										calcGross(detailFormStore);

									}
								},
								anchor : '90%'
							}]
						}, {
							columnWidth : .450,
							layout : 'form',
							border : false,
							items : [{
								xtype : 'numberfield',
								fieldLabel : '毛坯提升',
								decimalPrecision : 6,
								name : 'grossUpdate',
								listeners : {
									"change" : function(_this, _new, _old) {
										/**
										 * @todo 同样的修改材料费，然后更新ds
										 */
										detailFormStore.getAt(0).data["grossUpdate"] = _new;
										calcGross(detailFormStore);

									}
								},
								allowBlank : false,
								anchor : '90%'
							}]
						}]

					}, {
						layout : 'column',// 在formpanel的itmes加入一个column的定义
						border : false,
						labelSeparator : ':',
						items : [{
							columnWidth : .450,
							layout : 'form',
							border : false,
							items : [{
								xtype : 'numberfield',
								fieldLabel : '材料费',
								decimalPrecision : 6,
								listeners : {
									"change" : function(_this, _new, _old) {
										/**
										 * @todo 直接更新detailFormStore就可以了。
										 */
										detailFormStore.getAt(0).data["grossPrice"] = _new;
										calcAllUntilPrice(detailFormStore,
												detailGridStore);

									}
								},
								name : "grossPrice",
								anchor : '90%'
							}]
						}]

					}, {
						layout : 'column',// 在formpanel的itmes加入一个column的定义
						border : false,
						labelSeparator : ':',
						items : [{
							columnWidth : .450,
							layout : 'form',
							border : false,
							items : [{
								xtype : 'numberfield',
								fieldLabel : '加工费',
								decimalPrecision : 6,
								name : 'mtrlProcsPrice',
								listeners : {
									"change" : function(_this, _new, _old) {
										/**
										 * @todo 直接更新detailFormStore，不过一般情况下是不需要的。
										 */
										detailFormStore.getAt(0).data["mtrlProcsPrice"] = _new;
										calcBaseFee(detailFormStore);
									}
								},
								allowBlank : false,
								anchor : '90%'
							}]
						}]

					}, {
						layout : 'column',// 在formpanel的itmes加入一个column的定义
						border : false,
						labelSeparator : ':',
						items : [{
									columnWidth : .450,
									layout : 'form',
									border : false,
									items : [{
												xtype : 'textfield',
												fieldLabel : '规格类型',
												readOnly : true,
												name : "specType",
												anchor : '90%'
											}]
								}, {
									columnWidth : .450,
									layout : 'form',
									border : false,
									items : [{
										fieldLabel : '加工流程',
										readOnly : true,
										name : "processScheme",
										xtype : 'combo',
										store : schemeDs,
										valueField : 'value',
										displayField : 'scheme',
										typeAhead : true,
										triggerAction : 'all',
										mode : 'local',
										listeners : {
											"select" : function(_this, _rec,
													_index) {
												/**
												 * @todo 这里需要根据选择的schemeStore进行选择。选定对应的schemeId
												 *       然后提示是否需要更新加工细节。然后再一步一步的更新
												 */
												Ext.Msg.confirm("提示",
														"是否需要将原来的的加工信息都替换掉？",
														function(button) {
															if (button == 'yes') {
																/**
																 * @todo 先将原来的procsDetail信息删除，然后再建立新的加工细节信息。
																 */
																dwr.engine
																		.setAsync(false);

																detailGridStore
																		.each(
																				function(
																						rec) {
																					DetailPrice
																							.removeProcess(convert(rec));
																				})

																DetailPrice
																		.createProcsDetail(
																				convert(detailFormStore
																						.getAt(0)),
																				_rec.data["value"],
																				function(
																						ret) {
																					if (ret) {
																						detailGridStore
																								.reload();
																						// detailGrid.getView().refresh();
																					} else {
																						Ext.Msg
																								.alert(
																										"错误",
																										"创建新的加工流程的时候遇到了错误,请联系管理员");
																					}
																				});
																dwr.engine
																		.setAsync(true);
															}

														});
											}
										},

										anchor : '90%'
									}]
								}]

					}, {
						layout : 'column',// 在formpanel的itmes加入一个column的定义
						border : false,
						labelSeparator : ':',
						items : [processGrid]

					}, {
						layout : 'column',// 在formpanel的itmes加入一个column的定义
						border : false,
						labelSeparator : ':',
						items : [{
							columnWidth : .450,
							layout : 'form',
							border : false,
							items : [{
								xtype : 'numberfield',
								fieldLabel : '充磁费',
								decimalPrecision : 6,
								listeners : {
									"change" : function(_this, _new, _old) {
										/**
										 * @todo 更新产品基本价格，然后detailFormStore.
										 */
										detailFormStore.getAt(0).data["congCiFee"] = _new;
										calcBaseFee(detailFormStore);

									}
								},
								name : "congCiFee",
								anchor : '90%'
							}]
						}, {
							columnWidth : .450,
							layout : 'form',
							border : false,
							items : [{
								xtype : 'numberfield',
								fieldLabel : '包装费',
								decimalPrecision : 6,
								listeners : {
									"change" : function(_this, _new, _old) {
										/**
										 * @todo 更新detailFormStore.
										 */
										detailFormStore.getAt(0).data["packFee"] = _new;
										calcBaseFee(detailFormStore);

									}
								},
								name : 'packFee',
								allowBlank : false,
								anchor : '90%'
							}]
						}]

					}, {
						layout : 'column',
						border : false,
						labelSeparator : ':',
						items : [{
							columnWidth : .450,
							layout : 'form',
							border : false,
							items : [{
								xtype : 'numberfield',
								fieldLabel : '其他费',
								decimalPrecision : 6,
								listeners : {
									"change" : function(_this, _new, _old) {
										/**
										 * @todo 更新detailFormStore.
										 */
										detailFormStore.getAt(0).data["otherFee"] = _new;
										calcBaseFee(detailFormStore);

									}
								},
								name : "otherFee",
								anchor : '90%'
							}]
						}, {
							columnWidth : .450,
							layout : 'form',
							border : false,
							items : [{
								xtype : 'numberfield',
								fieldLabel : '成品基价',
								decimalPrecision : 6,
								listeners : {
									"change" : function(_this, _new, _old) {
										/**
										 * @todo 更新detailFormStore.
										 */
										detailFormStore.getAt(0).data["baseCost"] = _new;
										calcAmount(detailFormStore);

									}
								},
								name : 'baseCost',
								allowBlank : false,
								anchor : '90%'
							}]
						}]

					}, {
						layout : 'column',// 在formpanel的itmes加入一个column的定义
						border : false,
						labelSeparator : ':',
						items : [{
							columnWidth : .450,
							layout : 'form',
							border : false,
							items : [{
								xtype : 'numberfield',
								fieldLabel : '综合提升',
								decimalPrecision : 6,
								listeners : {
									"change" : function(_this, _new, _old) {
										/**
										 * @todo 更新detailFormStore.
										 */
										detailFormStore.getAt(0).data["totalUpdate"] = _new;
										calcAmount(detailFormStore);

									}
								},
								name : "totalUpdate",
								anchor : '90%'
							}]
						}, {
							columnWidth : .450,
							layout : 'form',
							border : false,
							items : [{
								xtype : 'numberfield',
								fieldLabel : '产品价',
								decimalPrecision : 6,
								listeners : {
									"change" : function(_this, _new, _old) {
										/**
										 * @todo 更新detailFormStore.
										 */
										detailFormStore.getAt(0).data["amount"] = _new;
										this.calcAllFee(detailFormStore);

									}
								},
								name : 'amount',
								allowBlank : false,
								anchor : '90%'
							}]
						}]

					}, {
						layout : 'column',
						border : false,
						labelSeparator : ':',
						items : [{
							columnWidth : .450,
							layout : 'form',
							border : false,
							items : [{
								xtype : 'numberfield',
								fieldLabel : '三项提升',
								decimalPrecision : 6,
								listeners : {
									"change" : function(_this, _new, _old) {
										/**
										 * @todo 更新detailFormStore.
										 */
										detailFormStore.getAt(0).data["sanXiangRate"] = _new;
										calcSXFee(detailFormStore);

									}
								},
								name : "sanXiangRate",
								anchor : '90%'
							}]
						}, {
							columnWidth : .450,
							layout : 'form',
							border : false,
							items : [{
								xtype : 'numberfield',
								fieldLabel : '三项金额',
								decimalPrecision : 6,
								name : 'sanXiangFee',
								listeners : {
									"change" : function(_this, _new, _old) {
										/**
										 * @todo 更新detailFormStore.
										 */
										detailFormStore.getAt(0).data["sanXiangFee"] = _new;
										calcAllFee(detailFormStore);

									}
								},
								allowBlank : false,
								anchor : '90%'
							}]
						}]

					}, {
						layout : 'column',// 在formpanel的itmes加入一个column的定义
						border : false,
						labelSeparator : ':',
						items : [{
							columnWidth : .450,
							layout : 'form',
							border : false,
							items : [{
								xtype : 'numberfield',
								fieldLabel : '税率',
								decimalPrecision : 6,
								name : "taxRate",
								listeners : {
									"change" : function(_this, _new, _old) {
										/**
										 * @todo 更新detailFormStore.
										 */
										detailFormStore.getAt(0).data["taxRate"] = _new;
										this.calcTRFee(detailFormStore);

									}
								},
								anchor : '90%'
							}]
						}, {
							columnWidth : .450,
							layout : 'form',
							border : false,
							items : [{
								xtype : 'numberfield',
								fieldLabel : '税额',
								decimalPrecision : 6,
								name : 'taxFee',
								listeners : {
									"change" : function(_this, _new, _old) {
										/**
										 * @todo 更新detailFormStore.
										 */
										detailFormStore.getAt(0).data["taxFee"] = _new;
										calcAllFee(detailFormStore);

									}
								},
								allowBlank : false,
								anchor : '90%'
							}]
						}]

					}, {
						layout : 'column',// 在formpanel的itmes加入一个column的定义
						border : false,
						labelSeparator : ':',
						items : [{
							columnWidth : .450,
							layout : 'form',
							border : false,
							items : [{
								xtype : 'numberfield',
								fieldLabel : '出厂价',
								decimalPrecision : 6,
								name : "mtrlProcs",
								listeners : {
									"change" : function(_this, _new, _old) {
										/**
										 * @todo 更新detailFormStore.
										 */
										detailFormStore.getAt(0).data["mtrlProcs"] = _new;
										detailFormStore.fireEvent("update",
												detailFormStore,
												detailFormStore.getAt(0),
												this.DONOTCALC);
										// calcAllFee(detailFormStore);

									}
								},
								anchor : '90%'
							}]
						}]

					}]
		});
	return detailForm;
}
function autoProcess(A,B,C,D)
{
	// TODO  A是gridStore,B是before,C是finalSpec;
	//dwr.engine.setAsync(false);
	if(B==null)
	{
		// TODO 先判断一下属于第几行
		if(A.length<1)
		return ;
		var num=A[0].data["linenum"];
		if(num==1)
		{
			B=detailFormStore.getAt(0).data["getSpec"].split("(")[0];
			C=detailFormStore.getAt(0).data["kaiMoSpec"];
			D=0;
		}
		else
		{
			B=detailGridStore.getAt(num-2).data["spec"];
			C=detailFormStore.getAt(0).data["kaiMoSpec"];
			D=0;
		}
	}
	var before=B;
	for(var i=D;i<A.length;i++)
	{
		var rec=A[i];
		/**@todo
		 * 需要配置加工后的规格,读取加工成品率，读取加工费，读取加工面积，读取加工件数。
		 * 
		 */
		
		DetailPrice.calcProcsDetail(before,convert(rec),C,function(ret)
		{
			for(var property in ret)
			{
				rec.data[property]=ret[property];
			}
			if(D==A.length-1)
			{
				detailGridStore.fireEvent("update",detailGridStore,detailGridStore.getAt(0));
			}
			else
				autoProcess(A,ret["spec"],C,D+1);
		});
		break;
	}
	
	//dwr.engine.setAsync(true);
}
